package com.vividstores.integration.mq;

import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;

@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public class MQFile {
	@XmlTransient
	private File file;
	private MQFileType type;
	private String name;
	private long size;
	private Date lastModified;
	private Map<String, String> data = new HashMap<String, String>();

	/**
	 * 当该{@link MQFile}对象是从Queue中读出时，返回已读取并存放于本地的文件路径。
	 * 
	 * @return 文件对象
	 */
	public File getFile() {
		return file;
	}

	/**
	 * 当该{@link MQFile}对象是向Queue中写入时，返回要进行写入的本地的文件路径。
	 * @param file
	 */
	public void setFile(File file) {
		this.file = file;
	}

	/**
	 * 文件类型
	 * @return 文件类型
	 */
	public MQFileType getType() {
		return type;
	}

	public void setType(MQFileType type) {
		this.type = type;
	}

	public String getName() {
		return name;
	}

	/**
	 * 在发送文件时会将此属性自动设置为文件名字
	 * 
	 * @param name 文件名，包含后缀
	 */
	public void setName(String name) {
		this.name = name;
	}

	public long getSize() {
		return size;
	}
	
	/**
	 * 在发送文件时会将此属性自动设置为文件大小，单位是字节
	 * 
	 * @param name 以字节为单位的文件大小
	 */
	public void setSize(long size) {
		this.size = size;
	}

	public Date getLastModified() {
		return lastModified;
	}

	/**
	 * 在发送文件时会将此属性自动设置为文件最后修改时间，单位是毫秒
	 * 
	 * @param name 以毫秒为单位的文件最后修改时间
	 */
	public void setLastModified(Date lastModified) {
		this.lastModified = lastModified;
	}

	public Map<String, String> getData() {
		return data;
	}

	/**
	 * 与单个文件关联的扩展信息
	 * 
	 * @param data 扩展数据，由应用程序协商和解析
	 */
	public void setData(Map<String, String> data) {
		this.data = data;
	}

	@Override
	public String toString() {
		return "MQFile [file=" + file + ", type=" + type + ", name=" + name
				+ ", size=" + size + ", lastModified=" + lastModified
				+ ", data=" + data + "]";
	}

}
